9
תגובות
mysql> SHOW VARIABLES LIKE 'character\_set\_%';
+--------------------------+--------+
| Variable_name            | Value  |
+--------------------------+--------+
| character_set_client     | utf8   |
| character_set_connection | utf8   |
| character_set_database   | latin1 |
| character_set_filesystem | binary |
| character_set_results    | utf8   |
| character_set_server     | latin1 |
| character_set_system     | utf8   |
+--------------------------+--------+
7 rows in set (0.00 sec)

ניסיתי לפעול לפי מה שכתוב בקטע הזה אבל עדיין קיבלתי את התוצאה שלמעלה.
יכול להיות שזה קשור לזה שיש לי בסיס נתונים קיים עם קידוד שהוא לא utf8? (פשוט העליתי אותו מקובץ גיבוי, ומשהו שם השתבש. אני צריך לשנות גם את זה... מישהו?)

9 תשובות

avatar ענה intval ב 01 ליוני 2013 #

מה הבעיה ? אתה שולף סימני שאלה מהמסד?
שים לב שאתה עושה set names לאותו קידוד שבו נמצאים השדות בטבלה. כל השאר לא משנה.
חוץ מזה, אתה תמיד יכול לפתוח את קובץ הגיבוי ולהחליף את כל המופעים של
latin1 ב utf8
latin_swedish_ci ב utf8_general_ci

avatar ענה OrelBeY ב 01 ליוני 2013 #

וכן, אני שולף ג'יבריש.
הבעיה היא ש-character_set_database ו-character_set_server עדיין נמצאים עם latin1. אתה אומר שפשוט צריך לשנות את הערכים שלהם שם בטבלה וזהו? זה לא רק "תופעת לוואי" של השינוי?
פתחתי את קובץ הגיבוי, והכול שם בסדר - ולא היה שם אפילו מופע אחד של latin1/latin_swedish_ci.

avatar ענה zacharya ב 02 ליוני 2013 #

תוריד את הקובץ מהממסד, ואז כל מה שכתוב כlatin1 תחליף לutf8 (הידעת שאפשר לעשות החלף הכל בנוטפד++? O:) ותעלה, מניסיון זה עבד לי ^^

avatar ענה intval ב 02 ליוני 2013 #

מה שהראת בשאלה הם ערכים גלובליים שנעקפים על ידי הגדרות לוקאליות של כל מסד, טבלה ועמודה.
תוודא שאתה עושה set names אחרי החיבור . ואם זה לא עוזר אז התגובה הראשונה פה.

בנוסף יכול מאוד להיות שכשהלאת את הגיבוי - לא היה set names ולכן הגיבוי עלה בתור latin1 במקום מה שצריך להיות.
עוד פעם, הערכים האלה משוכתבים על ידי ההגדרות הלוקאליות של כל עמודה,
אבל אתה בכל מקרה יכול גם לשנות את ההגדרות הכלליות והגדרות ברירת המחדל של המסד כולו דרך הקובץ /etc/my.cnf

avatar ענה OrelBeY ב 03 ליוני 2013 #

לא עזר.

עדיין character_set_database ו-character_set_server עם latin1.
אחרי שאני אשנה אותם איכשהו, אני אוכל לשחזר את המסד מחדש.
איך? ניסיתי לפי כמה מדריכים, ועדיין שני אלה למעלה לא השתנו.

avatar ענה intval ב 03 ליוני 2013 #

הם לא השתנו כי הם מוגדרים פר חיבור.
זה אומר שאתה צריך להיכנס לקונסול של mysql, להחליף קידוד עם set names ורק אז לבדוק \ לשלוף \ לייבא את הקובץ שלך.

avatar ענה OrelBeY ב 03 ליוני 2013 #

עשיתי את זה דרך הקונסול. ואז בדקתי עם הפקודה שיש למעלה.

avatar ענה intval ב 04 ליוני 2013 #

לפי הדוגמה בשאלה עצמה - כל מה שהיה אפשר לשנות - השתנה.
ההגדרות של server ו database לא תלויות בחיבור אלה כלליות לשרת. אותם אפשר לשנות רק בקובץ הקונפיגורציה my.cnf
אבל הם לא אמורות להשפיע על שום דבר.

תוודא אגב שקובץ הגיבוי שלך עצמו שמור בתור utf-8 without bom

avatar ענה OrelBeY ב 06 ליוני 2013 #

אוקיי, אני אנסה לשנות אותם. (גם אם זה לא ישפיע על זה ספציפית.)

הוא שמור כ-UTF-8. לא יודע לגבי ה-bom, אבל אם הוא היה - זה בכלל לא היה עובד, לא?

העליתי את האתר עצמו וכבר בדף הבית אפשר לראות שכל הטקסט נראה מעולה. יכול להיות שזה פשוט בעיה בתוכנה שבה השתמשתי ב-SSH? או שזה עדיין ככה, רק שהאתר ממיר את זה ל-UTF-8? (ואז זה לא טוב; ניצול משאבים מיותר.)